---@meta _

---@class AceModuleCore-2.0 帮助您将 AddOn 拆分为单独的 “模块”，这些模块可以轻松打开和关闭。为您处理事件、钩子、工具提示扫描器等的启用/禁用。
---@field Mixin table
---
---事件：
--- - Ace2_ModuleCreated
--- - Ace2_AddonEnabled
--- - Ace2_AddonDisabled
---
---[文档](https://web.archive.org/web/20071214211047/http://www.wowace.com/wiki/AceModuleCore-2.0)
local AceModuleCore = {}

---新建模块
---@param name string 模块名称
---@param ... string 欲要混入模块库名
---@return table|AceAddon-2.0
function AceModuleCore:NewModule(name, ...) end

---判断是否存在模块
---@param ... string 模块名称
---@return boolean has 是否存在模块
function AceModuleCore:HasModule(...) end

---获取模块
---@generic T
---@param name `T` 模块名称
---@return table|T module 模块
function AceModuleCore:GetModule(name) end

---判断是否是模块
---@param name string|table 模块名称
---@return boolean is 是否是模块
function AceModuleCore:IsModule(name) end

---迭代模块
---@return function iterator 迭代
function AceModuleCore:IterateModules() end

---置模块混入
---@param ... string 模块混入名称
function AceModuleCore:SetModuleMixins(...) end

---置模块类
---@param class table 模块类
function AceModuleCore:SetModuleClass(class) end

---是否激活模块
---@param module string|table 模块名称
---@return boolean active 是否激活模块
function AceModuleCore:IsModuleActive(module) end

---切换模块激活
---@param module string|table 模块名称
---@param state? boolean|nil 是否激活模块
---@return boolean active 激活
function AceModuleCore:ToggleModuleActive(module, state) end
